package org.htmlparser.visitors;

import org.htmlparser.Node;
import org.htmlparser.Remark;
import org.htmlparser.Tag;
import org.htmlparser.Text;
import org.htmlparser.tags.CompositeTag;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;

public class UrlModifyingVisitor extends NodeVisitor
{
  private String linkPrefix;
  private StringBuffer modifiedResult;

  public UrlModifyingVisitor(String paramString)
  {
    super(true, true);
    this.linkPrefix = paramString;
    this.modifiedResult = new StringBuffer();
  }

  public String getModifiedResult()
  {
    return this.modifiedResult.toString();
  }

  public void visitEndTag(Tag paramTag)
  {
    Node localNode = paramTag.getParent();
    if (localNode == null)
      this.modifiedResult.append(paramTag.toHtml());
    while (true)
    {
      do
        return;
      while (localNode.getParent() != null);
      this.modifiedResult.append(localNode.toHtml());
    }
  }

  public void visitRemarkNode(Remark paramRemark)
  {
    this.modifiedResult.append(paramRemark.toHtml());
  }

  public void visitStringNode(Text paramText)
  {
    this.modifiedResult.append(paramText.toHtml());
  }

  public void visitTag(Tag paramTag)
  {
    if (paramTag instanceof LinkTag)
      ((LinkTag)paramTag).setLink(this.linkPrefix + ((LinkTag)paramTag).getLink());
    while (true)
    {
      do
      {
        if ((paramTag.getParent() == null) && (((!(paramTag instanceof CompositeTag)) || (((CompositeTag)paramTag).getEndTag() == null))))
          this.modifiedResult.append(paramTag.toHtml());
        return;
      }
      while (!(paramTag instanceof ImageTag));
      ((ImageTag)paramTag).setImageURL(this.linkPrefix + ((ImageTag)paramTag).getImageURL());
    }
  }
}